A database is generally a collection of related information stored in computer readable form. Databases are ubiquitous in modern life. Mobile phones often contain databases of recently and frequently called numbers. The world wide web is comprised of countless databases. Hand held computers are in large part valuable because of the databases they contain. In fact, the databases contained in most computers are far more valuable than the computer hardware itself.
In order to use this valuable information, people must have access to the information. This is frequently accomplished using different types of computers for different situations. For example, a salesman may create a spreadsheet containing pricing information on a desktop computer, and desire to access that information via a small hand held computer while at a customer's premises.
It is often difficult, expensive or impractical to actually access the same database from both types of computers, especially if one is operated in a mobile environment. To overcome this difficulty, a process of synchronizing databases was developed.
Synchronizing a database is generally a process by which a plurality of copies of a database is maintained such that the information in all copies is the same, or synchronized. The copies need not be bit for bit identical. A synchronization process can accommodate different file structure, operating system and data media requirements. The copies are frequently on different computer systems, but it is sometimes desirable to maintain separate, synchronized databases on the same computer system. Synchronization allows updates (“mutations”) e.g., additions, deletions and/or changes made to one copy of a database, for example a copy on a hand held computer, to be reflected to all copies.
Prior art synchronization systems use a “double headed” conduit program to synchronize information. As an unfortunate result, such prior art conduit programs must manage all aspects of synchronization, data retrieval and data storage between two databases, for example on a desktop computer and a hand held computer. Data retrieval and data storage may be particularly difficult in situations involving different types of computers, e.g., hand held versus desktop, which are running different operating systems, e.g., Palm OS versus Microsoft Windows, and which store information in different media, e.g., byte-addressable random access memory versus 512-byte record based rotating magnetic media. In addition, a conduit designed to synchronize a database on a hand held computer and, for example, a PC, must manage the communication between the two computers.
It is frequently necessary or desirable to synchronize more than two databases. For example, a hand held computer user may desire to synchronize calendar data between his hand held computer, a personal calendar on a desk top computer and a group calendar on a server. Under the prior art, using double ended conduit programs, the synchronization of more than two databases typically requires multiple synchronization sessions. For example, what might be required is a first synchronization session to synchronize databases A and B, followed by a second synchronization session to synchronize databases A and C, etc. Further, in general a separate “double ended” conduit program would be required for each synchronization to account for any structural differences between, for example, databases B and C.
As an unfortunate consequence of such limitations of the prior art, a commercially feasible method of synchronizing multiple databases is not available. In addition, because prior art conduit programs are constructed to synchronize between two specific databases, the introduction of a new type of database typically requires the creation of not just one, but an entire set of new conduit programs to synchronize with all of the other types of databases. Such factors strongly discourage the introduction of new databases, limiting the art and utility of computer databases and hand held computers.